package dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.Alunoconhectec;
import util.ConexaoBD;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

public class DAOAlunoConhecimento extends ModelDAO<Alunoconhectec>{
	private DAOConhecimentoTecnologico daoConhec = new DAOConhecimentoTecnologico();
	private DAOAluno daoAluno = new DAOAluno();
	public DAOAlunoConhecimento() {
        super(Alunoconhectec.class);
    }
	
	public void save(Alunoconhectec ac){
		super.begin();
		super.save(ac);
		super.commit();
	}
	
	public void update(Alunoconhectec ac){
		super.begin();
		super.update(ac);
		super.commit();
	}
	
	public Alunoconhectec search(int cod){
		super.begin();
		Alunoconhectec ac = super.search(cod);
		super.commit();
		return ac;
	}
	
	public List<Alunoconhectec> listar(){
		super.begin();
        List<Alunoconhectec> list = super.findAll();
        super.commit();
        return list;
    }
	
	public void delete(Alunoconhectec ac){
		super.begin();
		super.delete(ac.getCodAlunoConhec());
		super.commit();
	}
	
	public List<Alunoconhectec> listar(Integer codAluno) throws SQLException{
		// conectar banco
		Connection con = ConexaoBD.getConnection();
		PreparedStatement stmt = (PreparedStatement) con.prepareStatement ("select * from alunoconhectec, aluno where aluno.codAluno="+codAluno+" and alunoconhectec.codAluno=aluno.codAluno");
		ResultSet rs = stmt.executeQuery();
			
		List<Alunoconhectec> conhecimento = new ArrayList<Alunoconhectec>();
			
		while (rs.next()){
		//criando o objeto usuario
		Alunoconhectec ct = new Alunoconhectec();
		Integer codConhec = rs.getInt("codConhecTec");
		ct.setConhecimentotecnologico(daoConhec.search(codConhec));
		ct.setNivelConhecTec(rs.getInt("nivelConhecTec"));
		Integer codAl = rs.getInt("codAluno");
		ct.setAluno(daoAluno.search(codAl));
		ct.setCodAlunoConhec(rs.getInt("codAlunoConhec"));
		
		//adicionando o objeto a lista
		conhecimento.add(ct);
		}
		
		//}
		return conhecimento;
    }
}
